/***************************************************************************
 *   Copyright (C) 2009 by Bernhard Neuhofer   *
 *   mail@bneu.at   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

#include "roundrobin.h"
#include "AbstractLp.h"
#include <vector>
#include <map>
#include <iostream>
#include <cstdlib>
#include "../tools/log.h"

AbstractLp* RoundRobin::next()
{
	cout<<_lpRefs.size()<<" LPs exist"<<endl;
	if ( !_lpRefs.empty() )
	{	
	iter++;
	if (iter==_lpRefs.end()) iter=_lpRefs.begin();

	return (*iter).second;
// 		cout<<"roundrobin: start"<<_lpRefs.size()<<endl;
// 		
// 		int temp=0;
// 		map<unsigned int,AbstractLp*>::iterator iter;
// 		for(iter=_lpRefs.begin();iter!=_lpRefs.end();++iter)
// 		{
// 			if(index==temp)
// 			{
// 			   index++;
// 			   if(index>=_lpRefs.size()-1) index=0;
// 				cout<<"roundrobin:"<<index<<"/"<<_lpRefs.size()<<endl;
// 				if ((*iter).second==NULL) cerr <<"no lp returned"<<endl;
// 			    return (*iter).second;
// 			}
// 		}
// 		cout<<"roundrobin: finish"<<endl;
	}
	else 
	{
		FILE_LOG(logERROR)<<"no Lps found!"<<endl;
		exit(0);
	};
	
}
